home *** CD-ROM | disk | FTP | other *** search
/ Tiger Disk 13 / Tiger_Disk_013_19xx_Tiger-Crew-Disk_de_Side_B.d64 / lektion 9 (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  10KB  |  278 lines

  1. 1 rem*********************************
  2. 2 rem*---------lektion-9-------------*
  3. 3 rem*-------------------------------*
  4. 4 rem*----(w)-by-arno-freisinger-----*
  5. 5 rem*-------------------------------*
  6. 6 rem*--------teachmaster------------*
  7. 7 rem*--(NULL)----------------------------*
  8. 8 rem*********************************
  9. 10 poke 53280 , 11 : poke 53281 , 11 : print "[155]" : poke 2050 , 1
  10. 15 sys 42291 : poke 46 , peek (35) : poke 45 , peek (781) + 2 : clr
  11. 20 print"[147]"tab(15)"teachmaster"
  12. 30 print""tab(09)"(w) by arno freisinger"
  13. 40 print""tab(10)"                    "
  14. 50 for i = 1 to 2000 : next
  15. 60 print"[147]"tab(15)"lektion 9"
  16. 70 for i = 1 to 1000 : next
  17. 80 get a$ : get a$ : get a$
  18. 85 rem*********************************
  19. 90 rem*-------- seite 1 --------------*
  20. 95 rem*********************************
  21. 100 print"[147]in der letzten lektion haben wir wieder"
  22. 110 print"sehr viel gelernt und wenn sie sich"
  23. 120 print"in sachen grafik auskennen, dann sind"
  24. 130 print"sie jetzt auch schon in der lage, ein"
  25. 140 print"gutes spiel zu schreiben. aber machen"
  26. 150 print"wir jetzt weiter mit diesem kurs."
  27. 160 print"in dieser lektion werden wir alle rest-"
  28. 170 print"lichen befehle erlernen und in den"
  29. 180 print"folgenden lektionen werden wir noch ein"
  30. 190 print"paar tricks lernen. mit diesem wissen  "
  31. 210 print""tab(14)"taste druecken"
  32. 220 print""tab(18)"-1-
  33. 230 [141] 250
  34. 240 [145] a [137] 296 , 60
  35. 247 [143]********************************
  36. 248 [143]*-------- tasten abfrage ------*
  37. 249 [143]********************************
  38. 250 [161] a$ : [139] a$ [178] "" [167] 250
  39. 260 [139] a$ [178] "z" [167] a[178]2 : [137] 280
  40. 270 a [178] 1
  41. 280 [142]
  42. 285 [143]********************************
  43. 290 [143]*----------- seite 2 ----------*
  44. 295 [143]********************************
  45. 296 [153]"loadkoennen sie schon einem profi-pro-"
  46. 300 [153]"grammierer konkurenz machen .       "
  47. 310 [153]"jetzt aber weiter mit den leztzten paar"
  48. 320 [153]"befehlen. andwait so heisst der naechste."
  49. 330 [153]"sein namensgenosse in basic hat fast"
  50. 340 [153]"die gleiche funktion. mit and kann man"
  51. 350 [153]"bestimmte bits im einem byte auf null"
  52. 360 [153]"setzen, ohne dass ein anderes bit be-"
  53. 370 [153]"einflusst wird. die korrekte form des"
  54. 400 [153]""[163]14)"taste druecken"
  55. 410 [153]""[163]18)"-2-"
  56. 420 [143]********************************
  57. 430 [143]*--------- seite 3 ------------*
  58. 440 [143]********************************
  59. 450 [141] 250
  60. 460 [145] a [137] 470 , 100
  61. 470 [153]"loadbefehles lautet and #(wert) oder     "
  62. 480 [153]"and (adresse). er funktioniert so :"
  63. 490 [153]"es wird der akku mit dem angegeben wert"
  64. 500 [153]"verglichen. jetzt schauen wir uns das"
  65. 510 [153]"doch einmal genauer an :"
  66. 520 [153]" akkuwait          00000011  = 3        "
  67. 530 [153]" wertwait          10000010  = 130      "
  68. 540 [153]" neuer akkuwait  = 00000010  = 2        "
  69. 550 [153]"sehen sie, es werden alle bits auf null"
  70. 560 [153]"gesetzt, die nicht mit dem wert, der mit"
  71. 580 [153]""[163]14)"taste druecken"
  72. 590 [153]""[163]18)"-3-"
  73. 600 [141] 250
  74. 610 [145] a [137] 620 , 285
  75. 620 [143]********************************
  76. 630 [143]*-------- seite 4 -------------*
  77. 640 [143]********************************
  78. 650 [153]"loadand angegeben wird,ueberein stimmen."
  79. 660 [153]"jetzt wieder, wie ueblich, das gegen-"
  80. 670 [153]"teil. dieser befehl heisst orawait. sehen"
  81. 680 [153]"wir uns gleich die funktionsweise des"
  82. 690 [153]"befehls an :"
  83. 700 [153]"akku       00000011  = 3               "
  84. 710 [153]"wert       10000101  =";128[170]1[170]4
  85. 720 [153]"neuer akku=10000111  =";128[170]3[170]4
  86. 730 [153]"wie sie sehen,wird jedes bit gesetzt,"
  87. 770 [153]""[163]14)"taste druecken"
  88. 780 [153]""[163]18)"-4-"
  89. 790 [141] 250
  90. 800 [145] a [137] 810 , 470
  91. 810 [143]********************************
  92. 820 [143]*------- seite 5 --------------*
  93. 830 [143]********************************
  94. 840 [153]"loaddas auch schon im mit ora angegebenen"
  95. 850 [153]"wert gesetzt ist. das ergebnis"
  96. 860 [153]"ist im akku . die anderen bits "
  97. 870 [153]"werden nicht beeinflusst."
  98. 880 [153]"die korekten befehlformen sehen so aus :"
  99. 890 [153]"ora #(wert) oder ora (adresse)."
  100. 900 [153]"der naechste vergleichsbefehl sieht"
  101. 910 [153]"so aus: eorwait #(wert) oder eor (adresse)."
  102. 920 [153]"dieser befehl vergleicht den speicher-"
  103. 930 [153]"inhalt exklusiv mit dem akku. dies"
  104. 940 [153]""[163]14)"taste druecken"
  105. 950 [153]""[163]18)"-5-"
  106. 960 [141] 250
  107. 970 [145] a [137] 980 , 630
  108. 980 [143]********************************
  109. 990 [143]*-------- seite 6 -------------*
  110. 995 [143]********************************
  111. 1000 [153]"loadsieht so aus :"
  112. 1010 [153]"akku       = 00001111  ="2[174]0[170]2[174]1[170]2[174]2[170]2[174]3
  113. 1020 [153]"wert       = 11110000  ="2[174]4[170]2[174]5[170]2[174]6[170]2[174]7
  114. 1030 [153]"neuer akku = 11110000  ="2[174]4[170]2[174]5[170]2[174]6[170]2[174]7
  115. 1040 [153]"noch ein beispiel :"
  116. 1050 [153]"akku        = 01000011  ="2[174]6[170]2[174]1[170]2[174]0
  117. 1060 [153]"wert        = 10110010  ="2[174]7[170]2[174]1[170]2[174]5[170]2[174]4
  118. 1070 [153]"neuer akku  = 11110001  ="240[170]1
  119. 1080 [153]"wie sie sehen,setzt diese funktion jedes"
  120. 1090 [153]"bit des akkus,welches nicht mit dem"
  121. 1100 [153]""[163]14)"taste druecken"
  122. 1110 [153]""[163]18)"-6-"
  123. 1120 [141] 250
  124. 1130 [145] a [137] 1140 , 810
  125. 1140 [143]*******************************
  126. 1150 [143]*---------- seite 7 ----------*
  127. 1160 [143]*******************************
  128. 1170 [153]"loadwert uebereinstimmt. so, jetzt kommt"
  129. 1180 [153]"der letzte vergleichsbefehl :"
  130. 1190 [153]"er heisst bitwait, mit ihm kann man bits"
  131. 1200 [153]"testen. bit vergleicht den akku mit dem"
  132. 1210 [153]"angegebenen wert wie der and-befehl."
  133. 1220 [153]"ist das ergebnis gleich null, dann wird"
  134. 1230 [153]"das z-flag auf 1 gesetzt. ist das "
  135. 1240 [153]"ergebniss groesser als 0, dann wird das"
  136. 1290 [153]""[163]14)"taste druecken"
  137. 1300 [153]""[163]18)"-7-"
  138. 1310 [141] 250
  139. 1320 [145] a [137] 1330 , 990
  140. 1330 [143]*******************************
  141. 1340 [143]*---------- seite 8 ----------*
  142. 1350 [143]*******************************
  143. 1360 [153]"loadz-flag auf 0 gesetzt. man kann"
  144. 1370 [153]"nach dem bit-befehl mit bmi und bpl "
  145. 1380 [153]"die flags abfragen, ob ein bit gesetzt"
  146. 1390 [153]"ist oder nicht. jetzt wollen wir uns"
  147. 1400 [153]"das ganze einmal ansehen :"
  148. 1410 [153]"akku     = 00110011   ="2[174]5[170]2[174]4[170]2[174]1[170]2[174]0
  149. 1420 [153]"wert     = 00110011   ="2[174]5[170]2[174]4[170]2[174]1[170]2[174]0
  150. 1430 [153]"ergebnis = 00000000   = 0"
  151. 1440 [153]"z-flag = 1
  152. 1490 print""tab(14)"taste druecken"
  153. 1500 print""tab(18)"-8-"
  154. 1502 gosub 250
  155. 1504 on a goto 1510 , 1140
  156. 1510 rem*******************************
  157. 1520 rem*--------- seite 9 -----------*
  158. 1530 rem*******************************
  159. 1540 print"[147]mit dem bit-befehl kann man nur ein-"
  160. 1550 print"zelne speicherstellen abfragen."
  161. 1560 print"der akku und die speicherstelle werden"
  162. 1570 print"nicht veraendert ! es werden nur die"
  163. 1580 print"z-,n- und v-flags beeinflusst."
  164. 1590 print"so,jetzt haben wir es fast geschafft."
  165. 1600 print"wir haben alle befehle durch, bis auf"
  166. 1610 print"die interrupt-befehle. fuer diese"
  167. 1620 print"brauchen wir aber erst einmal ein paar"
  168. 1630 print"grundlagen, die wir in der naechsten"
  169. 1650 print""tab(14)"taste druecken"
  170. 1660 print""tab(18)"-9-"
  171. 1670 gosub 250
  172. 1680 on a goto 1690 , 1340
  173. 1690 rem*******************************
  174. 1700 rem*------- seite 10 ------------*
  175. 1710 rem*******************************
  176. 1720 print"[147]lektion kennenlernen wollen. wir haben"
  177. 1730 print"aber drei sehr wichtige adressierungs-"
  178. 1740 print"arten noch nicht behandelt, die sehr"
  179. 1750 print"wichtig sind! als erstes die indirekte."
  180. 1760 print"wie sie sich erinnern koennen,werden"
  181. 1770 print"adressen (2-bytes) in ein low-und ein"
  182. 1780 print"hi-byte zerlegt. wenn sie eine solche"
  183. 1790 print"adresse in zwei bytes, die direkt "
  184. 1800 print"hintereinander liegen muessen,"
  185. 1810 print"schreiben, dann koennen sie mit dieser"
  186. 1820 print""tab(14)"taste druecken"
  187. 1830 print""tab(17)"-10-"
  188. 1840 gosub 250
  189. 1850 on a goto 1860 , 1510
  190. 1860 rem******************************
  191. 1870 rem*--------- seite 11 ---------*
  192. 1880 rem******************************
  193. 1890 print"[147]adressierungsart die adresse aufrufen,"
  194. 1900 print"die in diesen beiden bytes liegt."
  195. 1910 print"zum besseren verstaendnis ein beispiel:"
  196. 1920 print"angenommen in den speicherstellen $14"
  197. 1930 print"$15 liegt der wert $c000 (49152):"
  198. 1940 print"lda ($14) ;adresse aus $14 & $15 laden."
  199. 1950 print"cmp #$01  ;wert mit 1 vergleichen."
  200. 1960 print"bne loop  ;falls <> 1 dann nach loop."
  201. 1970 print"rts       ;zurueck springen.
  202. 1980 [153]"loop brk  ;unterbrechen."
  203. 1990 [153]""[163]14)"taste druecken"
  204. 2000 [153]""[163]17)"-11-"
  205. 2010 [141] 250
  206. 2020 [145] a [137] 2030 , 1500
  207. 2030 [143]*******************************
  208. 2040 [143]*---------- seite 12 ---------*
  209. 2050 [143]*******************************
  210. 2060 [153]"loadach du schreck, wir haben ja ganz den"
  211. 2070 [153]"befehl brkwait vergessen. so was aber"
  212. 2080 [153]"warum passen sie denn auch nicht auf?"
  213. 2090 [153]"man kann sich auch auf keinen verlassen!"
  214. 2100 [153]"brk unterbricht das programm und kehrt"
  215. 2110 [153]"zum monitor-programm zurueck (falls vor-"
  216. 2120 [153]"handen).dieser befehl wirkt wie der stop"
  217. 2130 [153]"befehl in basic. aber jetzt weiter mit"
  218. 2140 [153]"der adressierung. in $14 steht das low"
  219. 2150 [153]"byte von $c000. das ist also $00 und"
  220. 2180 [153]""[163]14)"taste druecken"
  221. 2190 [153]""[163]17)"-12-"
  222. 2200 [141] 250
  223. 2210 [145] a [137] 2220 , 1860
  224. 2220 [143]*******************************
  225. 2230 [143]*-------- seite 13 -----------*
  226. 2240 [143]*******************************
  227. 2250 [153]"loadin $15 das hi-byte. das ist $c0."
  228. 2260 [153]"wie schon gesagt, die adresse einfach"
  229. 2270 [153]"rueckwaerts. jetzt eine andere art der"
  230. 2280 [153]"adressierung. erstmal ein beispiel:"
  231. 2290 [153]"     ldx  #$00  ;x-register = 0       "
  232. 2300 [153]"loop lda name,x ;name+x-reg. laden."
  233. 2310 [153]"     inx        ;x = x + 1          "
  234. 2320 [153]"     cpx #$0f   ;x-vergleichen mit $0f."
  235. 2330 [153]"     bcc loop   ;falls < $0f dann loop."
  236. 2340 [153]"     rts        ;zurueck springen."
  237. 2350 [153]"name .tx"[199](34)"arno freisinger"[199](34)
  238. 2360 [153]""[163]14)"taste druecken"
  239. 2370 [153][163]17)"-13-"
  240. 2380 [141] 250
  241. 2390 [145] a [137] 2400 , 2000
  242. 2400 [143]*******************************
  243. 2410 [143]*---------- seite 14 ---------*
  244. 2420 [143]*******************************
  245. 2430 [153]"load.txwait ist kein maschinensprachebefehl,"
  246. 2440 [153]"sondern er laeuft auf den meisten"
  247. 2450 [153]"assemlerprogrammen. dieses programm "
  248. 2460 [153]"laedt den wert aus der speicherstelle"
  249. 2470 [153]"name,plus dem x-register. das gleiche"
  250. 2480 [153]"geht auch mit dem y-register. dies geht"
  251. 2490 [153]"aber nicht mit allen befehlen. am ende"
  252. 2500 [153]"dieses kurses werde ich in einer tabelle"
  253. 2510 [153]"alle befehle noch einmal auffuehren mit"
  254. 2520 [153]"allen wichtigen angaben."
  255. 2530 [153]""[163]14)"taste druecken"
  256. 2540 [153]""[163]17)"-14-"
  257. 2550 [141] 250
  258. 2560 [145] a [137] 2570 , 2220
  259. 2570 [143]*******************************
  260. 2580 [143]*--------- seite 15 ----------*
  261. 2590 [143]*******************************
  262. 2600 [153]"loadjetzt haben wir es fast geschafft. uns"
  263. 2610 [153]"fehlen nur noch die interrupt-befehle."
  264. 2620 [153]"sie werde ich in der naechsten lektion"
  265. 2630 [153]"erklaeren und ausserdem lernen wir, wie"
  266. 2640 [153]"wir den interrupt programmieren koennen."
  267. 2650 [153]"geben sie wieder ihr geraet ein."
  268. 2660 a$ [178] "" : [133] "dwait oder fwait ";a$
  269. 2670 [139] a$ [178] "" [167] [128]
  270. 2675 [139] a$ [178] "z" [167] [137] 2400
  271. 2680 [139] a$ [178] "d" [167] f[178]1 : [137] 2740
  272. 2690 [139] a$ [178] "f" [167] f[178]8 : [137] 2740
  273. 2700 [137] 2660
  274. 2710 [143]*******************************
  275. 2720 [143]*------- lade rotine ---------*
  276. 2730 [143]*******************************
  277. 2740 [151] 2,f : [151] 46,8:[151] 45,3 : [151] 2050 ,0: [147] "lektion 10" ,[194] (2)
  278.